package controllers

import (
	"goseckill/common"
	"goseckill/models"
	"goseckill/service"

	"github.com/kataras/iris/v12"
	"github.com/kataras/iris/v12/mvc"
)

type ProductController struct {
	// 上下文
	Ctx iris.Context  
	// 服务
	ProductService service.IProductService
}

// TODO 抽象出BaseController（接口）也是一种思路

func (p *ProductController) GetAll() mvc.View {
	productArr,_ := p.ProductService.GetAllProduct()
	return mvc.View{
		// Name 指定对应的页面
		Name: "/product/allProducts.html",
		Data: iris.Map{
			"productArr":productArr,
		},
	}
}

// 修改商品 根据Restful规则 Post Update
func (p *ProductController) PostUpdate() {
	// 获取上下文的信息
	product := models.Product{}
	// 解析上下文 中的请求
	p.Ctx.Request().ParseForm()  
	// 解码
	decoder := common.NewDecoder(&common.DecoderOptions{TagName: "form"})
	if err:=decoder.Decode(p.Ctx.Request().Form, product);err!=nil {
		// 上下文中的iris示例
		// p.Ctx.Application()
		p.Ctx.Application().Logger().Debug(err)  // 日志
	}
	// 更新数据库
	err := p.ProductService.UpdateProduct(&product)
	if err!=nil {
		p.Ctx.Application().Logger().Debug(err)
	}
	// 重定向
	p.Ctx.Redirect("/product/allProducts")
}